function Subject() { // 我家宝宝的类
  this.observers = [];
  this.state = '开心';
}
Subject.prototype.attach = function (observer) {
  this.observers.push(observer);
}
Subject.prototype.setState = function (state) {
  this.state = state;
  this.notify();
}
Subject.prototype.notify = function () {
  this.observers.forEach(function (observer) {
    observer.update();
  })
}
function Observer(name,target){ // 我  观察者 一般会有一个方法
  this.name = name;
  this.target = target;
}
Observer.prototype.update = function () { // 更新方法
  console.log(`通知：${this.name} 小宝宝当前的状态是 ${this.target.state}`)
  }
let subject = new Subject();
let observer1 = new Observer('我', subject);
let observer2 = new Observer('我媳妇', subject);
subject.attach(observer1); // 给目标添加观察者
subject.attach(observer2);
subject.setState('不开心');


// 架构课 年前最后一期


// promise 周边的promise 库 angular Q
// jquery axios fetch 
// 1) 同步多个异步的请求结果
// 2) 异步不支持try catch
// 3) 多个异步 如果有顺序关系 可能会导致回调地狱
// 4) 异步没有return